<!doctype html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>Improving productivity with the new Omnibox History</title>
		<meta name="description" content="Tiro Notes Blog and Devlog">
		<link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet">
		<link rel="alternate" href="/blog/feed/feed.xml" type="application/atom+xml" title="Tiro Notes Blog">
		<link rel="alternate" href="/blog/feed/feed.json" type="application/json" title="Tiro Notes Blog">
		
		<style>/**
 * okaidia theme for JavaScript, CSS and HTML
 * Loosely based on Monokai textmate theme by http://www.monokai.nl/
 * @author ocodia
 */

code[class*="language-"],
pre[class*="language-"] {
	color: #f8f8f2;
	background: none;
	text-shadow: 0 1px rgba(0, 0, 0, 0.3);
	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
	font-size: 1em;
	text-align: left;
	white-space: pre;
	word-spacing: normal;
	word-break: normal;
	word-wrap: normal;
	line-height: 1.5;

	-moz-tab-size: 4;
	-o-tab-size: 4;
	tab-size: 4;

	-webkit-hyphens: none;
	-moz-hyphens: none;
	-ms-hyphens: none;
	hyphens: none;
}

/* Code blocks */
pre[class*="language-"] {
	padding: 1em;
	margin: .5em 0;
	overflow: auto;
	border-radius: 0.3em;
}

:not(pre) > code[class*="language-"],
pre[class*="language-"] {
	background: #272822;
}

/* Inline code */
:not(pre) > code[class*="language-"] {
	padding: .1em;
	border-radius: .3em;
	white-space: normal;
}

.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
	color: #8292a2;
}

.token.punctuation {
	color: #f8f8f2;
}

.token.namespace {
	opacity: .7;
}

.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
	color: #f92672;
}

.token.boolean,
.token.number {
	color: #ae81ff;
}

.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
	color: #a6e22e;
}

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
	color: #f8f8f2;
}

.token.atrule,
.token.attr-value,
.token.function,
.token.class-name {
	color: #e6db74;
}

.token.keyword {
	color: #66d9ef;
}

.token.regex,
.token.important {
	color: #fd971f;
}

.token.important,
.token.bold {
	font-weight: bold;
}
.token.italic {
	font-style: italic;
}

.token.entity {
	cursor: help;
}
/*
 * New diff- syntax
 */

pre[class*="language-diff-"] {
	--eleventy-code-padding: 1.25em;
	padding-left: var(--eleventy-code-padding);
	padding-right: var(--eleventy-code-padding);
}
.token.deleted {
	background-color: hsl(0, 51%, 37%);
	color: inherit;
}
.token.inserted {
	background-color: hsl(126, 31%, 39%);
	color: inherit;
}

/* Make the + and - characters unselectable for copy/paste */
.token.prefix.unchanged,
.token.prefix.inserted,
.token.prefix.deleted {
	-webkit-user-select: none;
	user-select: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding-top: 2px;
	padding-bottom: 2px;
}
.token.prefix.inserted,
.token.prefix.deleted {
	width: var(--eleventy-code-padding);
	background-color: rgba(0,0,0,.2);
}

/* Optional: full-width background color */
.token.inserted:not(.prefix),
.token.deleted:not(.prefix) {
	display: block;
	margin-left: calc(-1 * var(--eleventy-code-padding));
	margin-right: calc(-1 * var(--eleventy-code-padding));
	text-decoration: none; /* override del, ins, mark defaults */
	color: inherit; /* override del, ins, mark defaults */
}
* { box-sizing: border-box; }
/* Defaults */
:root {
		--font-family:  Source Sans Pro,Helvetica Neue,Arial,sans-serif;
		--font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace;
}

/* Theme colors */
:root {
		--color-main-red: #f56e6e;
		--color-gray-20: #e0e0e0;
		--color-gray-50: #C0C0C0;
		--color-gray-90: #333;

		--background-color: #fff;

		--text-color: var(--color-gray-90);
		--text-color-link: #f56e6e;
		--text-color-link-active: #f56e6e;
		--text-color-link-visited: #f56e6e;

		--syntax-tab-size: 2;
}

@media (prefers-color-scheme: dark) {
		:root {
				--color-gray-20: #1e1e1e;
				--color-gray-50: #1e1e1e;
				--color-gray-90: #1e1e1e;

				/* --text-color is assigned to --color-gray-_ above */
				--text-color-link:#f56e6e;
				--text-color-link-active: #f56e6e;
				--text-color-link-visited: #f56e6e;

				--background-color: #fff;
		}
}


/* Global stylesheet */
* {
		box-sizing: border-box;
}

a {
		text-decoration: none;
}

html,
body {
		padding: 0;
		margin: 0 auto;
		font-family: var(--font-family);
		color: var(--text-color);
		background-color: var(--background-color);
}
html {
		overflow-y: scroll;
}
body {
		max-width: 40em;
}

/* https://www.a11yproject.com/posts/how-to-hide-content/ */
.visually-hidden {
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
		height: 1px;
		overflow: hidden;
		position: absolute;
		white-space: nowrap;
		width: 1px;
}

p:last-child {
		margin-bottom: 0;
}
p {
		line-height: 1.5;
}

li {
		line-height: 1.5;
}

a[href] {
		color: var(--text-color-link);
}
a[href]:visited {
		color: var(--text-color-link-visited);
}
a[href]:hover,
a[href]:active {
		color: var(--text-color-link-active);
}

main {
		padding: 1rem;
}
main :first-child {
		margin-top: 0;
}

header {
		/* border-bottom: 1px dashed var(--color-gray-20); */
}
header:after {
		content: "";
		display: table;
		clear: both;
}

.links-nextprev {
		list-style: none;
		padding: 1em 0;
		display: flex;
    justify-content: space-between;
}

table {
		margin: 1em 0;
}
table td,
table th {
		padding-right: 1em;
}

pre,
code {
		font-family: var(--font-family-monospace);
}
pre:not([class*="language-"]) {
		margin: .5em 0;
		line-height: 1.375; /* 22px /16 */
		-moz-tab-size: var(--syntax-tab-size);
		-o-tab-size: var(--syntax-tab-size);
		tab-size: var(--syntax-tab-size);
		-webkit-hyphens: none;
		-ms-hyphens: none;
		hyphens: none;
		direction: ltr;
		text-align: left;
		white-space: pre;
		word-spacing: normal;
		word-break: normal;
}
code {
		word-break: break-all;
}

/* Header */
header {
		display: flex;
		gap: 1em .5em;
		flex-wrap: wrap;
		align-items: center;
		padding: 1em;
		position:relative;
}
/*

#ARTICLE

*/

.post-metadata {
	margin-bottom: 20px!important;
}

p img {
	max-width: 90%;
	display:block;
}
code,
p code {
	background: #e6e6e6;
    padding: 4px;
    border-radius: 5px;
}
/*

#LIST

*/
/* TAG LIST */
.post-tags .tag:last-child .separator {
		display:none;
}
.post-tags .tag {

}
.post-tags {
		font-size: 10px;
		margin-left: 20px;
}
.post-tags-length-1 {
		display: none;
}
.tag-posts {
		display:none;
}
.home-link img {
		width: 50px;
}
.home-link {
		width: 170px;
		color: var(--color-gray-90)!important;
		display: flex;
		align-content: center;
    align-items: center;
    justify-content: space-between;

		font-size: 1em; /* 16px /16 */
		margin-right: 2em;
}
.home-link:link:not(:hover) {
		text-decoration: none;
}

/* Nav */
.nav {
		position: absolute;
		right: 0px;
		top: 30px;
		display: flex;
		padding: 0;
		margin: 0;
		list-style: none;
}
.nav-item {
		display: inline-block;
		margin-left: 22px;
		font-size: 15px;
		color: var(--color-gray-90);
}
.nav-item a[href]:not(:hover) {
		text-decoration: none;
		color: var(--color-gray-90);
}
.nav a[href][aria-current="page"] {
		text-decoration: none;
}

/* Posts list */
.postlist {
		list-style: none;
		padding: 0;
		padding-left: 1.5rem;
}
.postlist-item {
		display: flex;
		flex-wrap: wrap;
		align-items: baseline;
		counter-increment: start-from -1;
		margin-bottom: 1em;
}
.postlist-item:before {
		display: inline-block;
		pointer-events: none;
		content: "" counter(start-from, decimal-leading-zero) ". ";
		line-height: 100%;
		text-align: right;
		margin-left: -1.5rem;
}
.postlist-date,
.postlist-item:before {
		font-size: 0.8125em; /* 13px /16 */
		color: var(--color-gray-90);
}
.postlist-date {
		word-spacing: -0.5px;
}
.postlist-link {
		font-size: 1.1875em; /* 19px /16 */
		font-weight: 700;
		flex-basis: calc(100% - 1.5rem);
		padding-left: .25em;
		padding-right: .5em;
		text-decoration: none;

}
.postlist-item-active .postlist-link {
		font-weight: bold;
}

/* Tags */
.post-tag {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		text-transform: capitalize;
		font-style: italic;
}
.postlist-item > .post-tag {
		align-self: center;
}

/* Tags list */
.post-metadata {
		display: inline-flex;
		flex-wrap: wrap;
		gap: .5em;
		list-style: none;
		padding: 0;
		margin: 0;
}
.post-metadata time {
		margin-right: 1em;
}

/* Direct Links / Markdown Headers */
.header-anchor {
		text-decoration: none;
		font-style: normal;
		font-size: 1em;
		margin-left: .1em;
}
a[href].header-anchor,
a[href].header-anchor:visited {
		color: transparent;
}
a[href].header-anchor:focus,
a[href].header-anchor:hover {
		text-decoration: none;
}
a[href].header-anchor:focus,
:hover > a[href].header-anchor {
		color: #aaa;
}

h2 + .header-anchor {
		font-size: 1.5em;
}

/* Responsive */
@media (max-width: 600px) {
		header ul.nav {
				top: 5px;
				position: relative;
				left: -15px;
		}
}</style>
	</head>
	<body>

		<script type="text/javascript">
			(function(window, document, dataLayerName, id) {
					window[dataLayerName]=window[dataLayerName]||[],window[dataLayerName].push({start:(new Date).getTime(),event:"stg.start"});var scripts=document.getElementsByTagName('script')[0],tags=document.createElement('script');
					function stgCreateCookie(a,b,c){var d="";if(c){var e=new Date;e.setTime(e.getTime()+24*c*60*60*1e3),d="; expires="+e.toUTCString()}document.cookie=a+"="+b+d+"; path=/"}
					var isStgDebug=(window.location.href.match("stg_debug")||document.cookie.match("stg_debug"))&&!window.location.href.match("stg_disable_debug");stgCreateCookie("stg_debug",isStgDebug?1:"",isStgDebug?14:-1);
					var qP=[];dataLayerName!=="dataLayer"&&qP.push("data_layer_name="+dataLayerName),isStgDebug&&qP.push("stg_debug");var qPString=qP.length>0?("?"+qP.join("&")):"";
					tags.async=!0,tags.src="https://tiro-notes.containers.piwik.pro/"+id+".js"+qPString,scripts.parentNode.insertBefore(tags,scripts);
					!function(a,n,i){a[n]=a[n]||{};for(var c=0;c<i.length;c++)!function(i){a[n][i]=a[n][i]||{},a[n][i].api=a[n][i].api||function(){var a=[].slice.call(arguments,0);"string"==typeof a[0]&&window[dataLayerName].push({event:n+"."+i+":"+a[0],parameters:[].slice.call(arguments,1)})}}(i[c])}(window,"ppms",["tm","cm"]);
			})(window, document, 'dataLayer', '8be1ea79-efe6-40a5-8eaa-77e0a5d04b75');
		</script>



		<a href="#skip" class="visually-hidden">Skip to main content</a>

		<header>
			<a href="/blog/" class="home-link">
				<img src="https://tiro-notes.org/favicon.png">
				Tiro Notes Blog
			</a>
			<nav>
				<h2 class="visually-hidden">Top level navigation menu</h2>
				<ul class="nav">
					<li class="nav-item"> <a href="/blog/tags/guides/"> guides </a> </li>
					<li class="nav-item"> <a href="/blog/tags/devlog/"> devlog </a> </li>
					<li class="nav-item"> <a href="/blog/tags/"> all tags </a> </li>
					<li class="nav-item">
						<a href="/blog/feed/feed.xml">
							<span class="fa fa-rss"></span>
					</a> </li>
					<li class="nav-item"> <a href="https://github.com/dotgreg/tiro">
							<span class="fa fa-github"></span>
					</a> </li>
					<li class="nav-item"> <a href="https://tiro-notes.org"> site > </a> </li>
				</ul>
				<!-- <ul class="nav"> -->
					<!-- -->
					<!-- 	<li class="nav-item"><a href="/">Home</a></li> -->
					<!-- -->
					<!-- 	<li class="nav-item"><a href="/blog/">Archive</a></li> -->
					<!-- -->
					<!-- </ul> -->
			</nav>
		</header>

		<main id="skip">
			
<h1>Improving productivity with the new Omnibox History</h1>

<ul class="post-metadata">
	<li><time datetime="2023-06-28">28 June 2023</time></li>
	<li><a href="/blog/tags/devlog/" class="post-tag">devlog</a>, </li>
	<li><a href="/blog/tags/productivity/" class="post-tag">productivity</a>, </li>
	<li><a href="/blog/tags/omnibox/" class="post-tag">omnibox</a>, </li>
	<li><a href="/blog/tags/task-management/" class="post-tag">task management</a>, </li>
	<li><a href="/blog/tags/text-editor/" class="post-tag">text editor</a></li>
</ul>

<iframe width="560" height="315" src="https://www.youtube.com/embed/wrD82yjoYLQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>
<h3 id="a-note-tags-alternative" tabindex="-1">A Note tags alternative <a class="header-anchor" href="#a-note-tags-alternative">#</a></h3>
<p>I rely on Tiro Notes for task management and quick access to information, utilizing the fast ripgrep file search system. However, as a simple markdown-based system without a database, implementing relational features like tags is challenging without complicating the architecture.</p>
<h3 id="use-case-1-merged-global-todo-list-from-different-files-projects" tabindex="-1">Use case 1: Merged global todo list from different files/projects <a class="header-anchor" href="#use-case-1-merged-global-todo-list-from-different-files-projects">#</a></h3>
<p>Managing multiple projects simultaneously requires specific follow-up and individual project-based to-do lists.
Initially, I created a consolidated to-do list in a separate file, but it was a tedious manual process. To simplify this, I developed and utilized the omnibar search functionality. Now, I can search for <code>- [ ]</code> in my <code>notes_folder/work/project_folder</code> for a project-specific consolidated to-do list or in &quot;notes_folder/work&quot; for an overall consolidated to-do list.</p>
<p>Additionally, I enhanced my to-do tag system with other &quot;fields&quot; such as <code>- [ ] #i3 #h1</code> indicating task importance (#i3) and energy/difficulty level (#h1). In the morning, searching for <code>#i3</code> in <code>notes_folder/work</code> provides me with a list of the most urgent tasks.</p>
<p><img src="https://github.com/dotgreg/tiro-notes/assets/2981891/43fef211-8dc5-492a-9509-2010fc54a54d" alt="image"></p>
<p>If I'm not in the mood for energy-intensive tasks, I can further filter by #h1 or #h2 tasks.
<img src="https://github.com/dotgreg/tiro-notes/assets/2981891/e5ab13a0-788c-433f-baf4-bdde9a1a3dbc" alt="image"></p>
<h3 id="use-case-2-grocery-price-database" tabindex="-1">Use case 2: Grocery price database <a class="header-anchor" href="#use-case-2-grocery-price-database">#</a></h3>
<p>With rising inflation in Europe, I like comparing current grocery prices with those I previously paid. So I maintain a &quot;grocery to-do feed&quot; note with the following structure:</p>
<p><img src="https://github.com/dotgreg/tiro-notes/assets/2981891/d64340b8-47a0-40d8-9d18-682181d59918" alt="image"></p>
<p>To simplify, I note the price per kg next to cheap and good products using the shorthand <code>'px</code> (price in French). Now, if I want to compare prices with my previous purchases, I can use the Tiro mobile omnibox, type 'px, and find the desired result in the list.</p>
<p><img src="https://github.com/dotgreg/tiro-notes/assets/2981891/8d328d1f-10f1-4026-b513-ede33fe829b9" alt="image"></p>
<h3 id="but-the-user-experience-requires-too-many-keystrokes" tabindex="-1">... but the user experience requires too many keystrokes <a class="header-anchor" href="#but-the-user-experience-requires-too-many-keystrokes">#</a></h3>
<p>While happy with the system's ability to turn any markdown note into a relational database using files, I encountered a UX issue: Typing numerous keystrokes to access searches became frustrating. For example, the process to search for important work tasks on desktop is as follows:</p>
<p><code>- Navigate to the desired work folder =&gt; cmd + space (open omnibar) =&gt; 3 keystrokes for &quot;#i3&quot; =&gt; press enter</code></p>
<p>Since I frequently use this request, I wanted an easily accessible way to reuse it.</p>
<h3 id="introducing-omnibox-search-history" tabindex="-1">Introducing Omnibox search history <a class="header-anchor" href="#introducing-omnibox-search-history">#</a></h3>
<p>The new Omnibox History functionality logs your search requests. To access the log, simply type <code>&quot;,&quot;</code> within the omnibox.</p>
<p><img src="https://github.com/dotgreg/tiro-notes/assets/2981891/287ed15f-610f-4d9f-bdae-79cba61cab96" alt="image"></p>
<p>This reduces the keystrokes required to retrieve the important work to-do list to a minimum, eliminating the frustration of returning to the request:</p>
<ul>
<li>Previously: <code>Navigate to the desired work folder =&gt; cmd + space (open omnibar) =&gt; 3 keystrokes for &quot;#i3&quot; =&gt; press enter</code></li>
<li>Now: <code>cmd + space (open omnibar) =&gt; &quot;,&quot; =&gt; &quot;enter&quot; (most of the time, to retrieve the last request)</code></li>
</ul>
<h3 id="possibilities" tabindex="-1">Possibilities <a class="header-anchor" href="#possibilities">#</a></h3>
<p>A relational system in a note application like Tiro Notes offers numerous interesting use cases: Some additional uses I've explored include maintaining lists of things to watch/read. By adding &quot;text tags&quot; next to each item, I can filter them according to my mood.</p>
<p>You can test it by downloading Tiro Notes from the command line <code>npx tiro-notes@0.30.99.51</code></p>

<ul class="links-nextprev"><li>Previous: <a href="/blog/devlog/2023/06/agnostic-ai-assistant-into-tiro-notes.html">An agnostic AI assistant into Tiro Notes</a></li><li>Next: <a href="/blog/devlog/2023/06/tiro-notes-0-30-99-binaries-released-100-more-functionalities.html">Tiro Notes 0.30.99 Macos/Win/Linux released with 100+ functionnalities</a></li>
</ul>

		</main>

		<footer></footer>

		<!-- Current page: /blog/devlog/2023/06/improving-productivity-omnibox-history.html -->
	</body>
</html>
